/**
  ******************************************************************************
  * @file    main.c 
  * @author  18408107475@163.com
  * @version v1.1  // 版本号更新
  * @date    2025/04/24
  * @brief   高精度光照检测系统
  * @details 
  * 硬件连接：
  * - 光照传感器 -> ADC1_CHx (实际连接ADC3通道6/PF8)
  * - 基准电压需外接3.3V精密基准源（确保ADC参考电压稳定）
  * 
  * 功能说明：
  * 1. 使用16次均值滤波获取高精度AD值
  * 2. 通过串口1输出原始数据、电压值和百分比
  * 3. 每2秒更新一次数据
  ******************************************************************************
  */

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x.h"          // STM32标准库
#include "Delay.h"              // 延时函数库
#include "LIGHT_STD_Config.h"   // 光照传感器配置
#include "USART1_Config.h"      // 串口1配置
#include "USART3_Config.h"      // 串口3配置

/* 宏定义 --------------------------------------------------------------------*/
#define VREF            3.300f  // 实际测量的基准电压（需用万用表校准）

/* 函数声明 ------------------------------------------------------------------*/
// （当前文件无外部函数声明，保持空置）

/* 主程序 --------------------------------------------------------------------*/
int main(void)
{
    /* 硬件初始化 */
    LIGHT_STD_Config();         // 初始化光照传感器ADC
    USART1_Config(115200);      // 初始化串口1，波特率115200
    USART3_Config(115200);      // 初始化串口3，波特率115200
    
    /* 主循环 */
    while(1)
    {
        // 获取高精度AD值（16次采样均值）
        u16 raw_val = LIGHT_GetValue_HighPrecision();
        
        // 数据转换
        float voltage = (float)raw_val / 4095 * VREF;  // 计算电压值（0-3.3V）
        float percent = (float)raw_val / 4095 * 100;   // 计算百分比（0-100%）
        
        /* 串口打印格式化数据 */
        USART1_Printf("+-----------------------+\r\n");
        USART1_Printf("| Light Sensor Data     |\r\n");
        USART1_Printf("+-----------+-----------+\r\n");
        USART1_Printf("| RAW       | %-9d |\r\n", raw_val);      // 原始AD值
        USART1_Printf("| Voltage   | %-6.4f V |\r\n", voltage);  // 电压值
        USART1_Printf("| Percent   | %-6.2f %% |\r\n", percent); // 百分比
        USART1_Printf("+-----------+-----------+\r\n\n");
        
        /* 延时2秒（降低功耗+避免数据刷屏） */
        Delay_s(2);
    }
}

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
